<?php
/**
 * Klasa główna modułu głównego.
 * @author Mateusz Łędzewicz
 * @author Patryk Powiłan
 */
class Main{
	
	public $cookie;
	public $post;
	public $get;
	public $session;
	public $db;
	private $controller;
	
	public function __construct(){
		$this->init();
	}
	
	
	/**
	 * Inicjalizacja modułu głównego
	 * Przekazanie GET, SESSION, COOKIE, POST do klas Data
	 * Inizjalizacja połączenia z bazą danych
	 */
	public function init(){
		session_start();
		$this->cookie = new CookieData($_COOKIE);
		$this->post = new PostData($_POST);
		$this->get = new GetData($_GET);
		$this->session = new SessionData($_SESSION);
		$config = new Config();
		
		$this -> db = new DataBase();
    	$this -> db->connect($config -> getHost(), $config -> getPort(), $config->getDbname(), $config->getUser(), $config->getPass());
	}
	
	/**
	 * Załądowanie podmodułu
	 * @param String $controller nazwa podmodułu
	 */
	public function loadController($controller){
		//TODO zrób zmiejszanie znaków  :)
		$controller = $controller.'Controller';
		if(file_exists('controller/'.$controller.'.php')){
			$controller = ucfirst($controller);
			$this->controller = new $controller($this);
			//TODO sprawdzanie czy kontroller jest kontrollerem :D 
		} 
	} 
	/**
	 * Inizjalizacja podmoduły
	 * Sprawdzenie uprawnien
	 * Rozpoczęcie działania
	 * @return boolean
	 */
	public function initController(){
		//TODO obsługa błędów
		try{
			if(!is_null($this -> controller)){
				if($this->controller->checkUserPermision($this->session->getUserPermision())){
					$this -> controller -> init();
					$this-> controller -> begin();
					return true;
				}
			}
			throw new Exception('Nie ma takiego moduły lub nie masz uprawnień');
		}
		catch(Exception $exception){
			$this->controller = new ErrorController($this, $exception);
			
		}
		
		
	}
	/**
	 * Pobranie widoku z podmodułu
	 * @return html wynikowy html strony
	 */
	public function getView(){
		return $this->controller->getView();
	}
	
	
}

?>